home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / macos / cpu68000.cpt.hqx / CPU68000 / CPU / cpuE.c < prev    next >
C/C++ Source or Header  |  1997-06-16  |  50KB  |  1,878 lines

  1. #include "sysconfig.h"
  2. #include "sysdeps.h"
  3. #include "config.h"
  4. #include "options.h"
  5. #include "machdep/m68k.h"
  6. #include "my_memory.h"
  7. #include "custom.h"
  8. #include "readcpu.h"
  9. #include "newcpu.h"
  10. #include "compiler.h"
  11. #include "cputbl.h"
  12. #if !defined (MEMFUNCS_DIRECT_REQUESTED) || defined (DIRECT_MEMFUNCS_SUCCESSFUL)
  13. void REGPARAM2 CPU_OP_NAME(_e000)(uae_u32 opcode) /* ASR */
  14. {
  15.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  16.     uae_u32 dstreg = opcode & 7;
  17. {{    uae_u32 cnt = srcreg;
  18. {    uae_s8 data = m68k_dreg(regs, dstreg);
  19. {    uae_u8 val = data;
  20.     uae_u32 cmask = 0x80;
  21.     uae_u32 sign = cmask & val;
  22.     cnt &= 63;
  23.     VFLG = 0;
  24.     if (!cnt) { CFLG = 0; } else {
  25.     if (cnt >= 8) {
  26.         val = sign ? 0xff : 0;
  27.         CFLG=XFLG= sign ? 1 : 0;
  28.     } else {
  29.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  30.         val >>= cnt;
  31.         if (sign) val |= 0xff << (8 - cnt);
  32.     }}
  33.     NFLG = sign != 0;
  34.     ZFLG = val == 0;
  35.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  36. }}}}}
  37. void REGPARAM2 CPU_OP_NAME(_e008)(uae_u32 opcode) /* LSR */
  38. {
  39.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  40.     uae_u32 dstreg = opcode & 7;
  41. {{    uae_u32 cnt = srcreg;
  42. {    uae_s8 data = m68k_dreg(regs, dstreg);
  43. {    uae_u8 val = data;
  44.     uae_u32 cmask = 0x80;
  45.     cnt &= 63;
  46.     if (!cnt) { CFLG = 0; } else {
  47.     if (cnt >= 8) {
  48.         CFLG=XFLG = cnt == 8 ? (val & cmask ? 1 : 0) : 0;
  49.         val = 0;
  50.     } else {
  51.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  52.         val >>= cnt;
  53.     }}
  54.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  55.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  56. }}}}}
  57. void REGPARAM2 CPU_OP_NAME(_e010)(uae_u32 opcode) /* ROXR */
  58. {
  59.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  60.     uae_u32 dstreg = opcode & 7;
  61. {{    uae_u32 cnt = srcreg;
  62. {    uae_s8 data = m68k_dreg(regs, dstreg);
  63. {    uae_u8 val = data;
  64.     uae_u32 cmask = 0x80;
  65.     uae_u32 carry;
  66.     cnt &= 63;
  67.     for(;cnt;--cnt){
  68.     carry=val&1; val >>= 1;
  69.     if(XFLG) val |= cmask;
  70.     XFLG = carry;
  71.     }
  72.     CFLG = XFLG;
  73.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  74.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  75. }}}}}
  76. void REGPARAM2 CPU_OP_NAME(_e018)(uae_u32 opcode) /* ROR */
  77. {
  78.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  79.     uae_u32 dstreg = opcode & 7;
  80. {{    uae_u32 cnt = srcreg;
  81. {    uae_s8 data = m68k_dreg(regs, dstreg);
  82. {    uae_u8 val = data;
  83.     uae_u32 cmask = 0x80;
  84.     cnt &= 63;
  85.     if (!cnt) { CFLG = 0; } else {    uae_u32 carry;
  86.     for(;cnt;--cnt){
  87.     carry=val&1; val = val >> 1;
  88.     if(carry) val |= cmask;
  89.     }
  90.     CFLG = carry;
  91. }
  92.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  93.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  94. }}}}}
  95. void REGPARAM2 CPU_OP_NAME(_e020)(uae_u32 opcode) /* ASR */
  96. {
  97.     uae_u32 srcreg = ((opcode >> 9) & 7);
  98.     uae_u32 dstreg = opcode & 7;
  99. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  100. {    uae_s8 data = m68k_dreg(regs, dstreg);
  101. {    uae_u8 val = data;
  102.     uae_u32 cmask = 0x80;
  103.     uae_u32 sign = cmask & val;
  104.     cnt &= 63;
  105.     VFLG = 0;
  106.     if (!cnt) { CFLG = 0; } else {
  107.     if (cnt >= 8) {
  108.         val = sign ? 0xff : 0;
  109.         CFLG=XFLG= sign ? 1 : 0;
  110.     } else {
  111.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  112.         val >>= cnt;
  113.         if (sign) val |= 0xff << (8 - cnt);
  114.     }}
  115.     NFLG = sign != 0;
  116.     ZFLG = val == 0;
  117.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  118. }}}}}
  119. void REGPARAM2 CPU_OP_NAME(_e028)(uae_u32 opcode) /* LSR */
  120. {
  121.     uae_u32 srcreg = ((opcode >> 9) & 7);
  122.     uae_u32 dstreg = opcode & 7;
  123. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  124. {    uae_s8 data = m68k_dreg(regs, dstreg);
  125. {    uae_u8 val = data;
  126.     uae_u32 cmask = 0x80;
  127.     cnt &= 63;
  128.     if (!cnt) { CFLG = 0; } else {
  129.     if (cnt >= 8) {
  130.         CFLG=XFLG = cnt == 8 ? (val & cmask ? 1 : 0) : 0;
  131.         val = 0;
  132.     } else {
  133.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  134.         val >>= cnt;
  135.     }}
  136.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  137.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  138. }}}}}
  139. void REGPARAM2 CPU_OP_NAME(_e030)(uae_u32 opcode) /* ROXR */
  140. {
  141.     uae_u32 srcreg = ((opcode >> 9) & 7);
  142.     uae_u32 dstreg = opcode & 7;
  143. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  144. {    uae_s8 data = m68k_dreg(regs, dstreg);
  145. {    uae_u8 val = data;
  146.     uae_u32 cmask = 0x80;
  147.     uae_u32 carry;
  148.     cnt &= 63;
  149.     for(;cnt;--cnt){
  150.     carry=val&1; val >>= 1;
  151.     if(XFLG) val |= cmask;
  152.     XFLG = carry;
  153.     }
  154.     CFLG = XFLG;
  155.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  156.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  157. }}}}}
  158. void REGPARAM2 CPU_OP_NAME(_e038)(uae_u32 opcode) /* ROR */
  159. {
  160.     uae_u32 srcreg = ((opcode >> 9) & 7);
  161.     uae_u32 dstreg = opcode & 7;
  162. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  163. {    uae_s8 data = m68k_dreg(regs, dstreg);
  164. {    uae_u8 val = data;
  165.     uae_u32 cmask = 0x80;
  166.     cnt &= 63;
  167.     if (!cnt) { CFLG = 0; } else {    uae_u32 carry;
  168.     for(;cnt;--cnt){
  169.     carry=val&1; val = val >> 1;
  170.     if(carry) val |= cmask;
  171.     }
  172.     CFLG = carry;
  173. }
  174.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  175.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  176. }}}}}
  177. void REGPARAM2 CPU_OP_NAME(_e040)(uae_u32 opcode) /* ASR */
  178. {
  179.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  180.     uae_u32 dstreg = opcode & 7;
  181. {{    uae_u32 cnt = srcreg;
  182. {    uae_s16 data = m68k_dreg(regs, dstreg);
  183. {    uae_u16 val = data;
  184.     uae_u32 cmask = 0x8000;
  185.     uae_u32 sign = cmask & val;
  186.     cnt &= 63;
  187.     VFLG = 0;
  188.     if (!cnt) { CFLG = 0; } else {
  189.     if (cnt >= 16) {
  190.         val = sign ? 0xffff : 0;
  191.         CFLG=XFLG= sign ? 1 : 0;
  192.     } else {
  193.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  194.         val >>= cnt;
  195.         if (sign) val |= 0xffff << (16 - cnt);
  196.     }}
  197.     NFLG = sign != 0;
  198.     ZFLG = val == 0;
  199.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  200. }}}}}
  201. void REGPARAM2 CPU_OP_NAME(_e048)(uae_u32 opcode) /* LSR */
  202. {
  203.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  204.     uae_u32 dstreg = opcode & 7;
  205. {{    uae_u32 cnt = srcreg;
  206. {    uae_s16 data = m68k_dreg(regs, dstreg);
  207. {    uae_u16 val = data;
  208.     uae_u32 cmask = 0x8000;
  209.     cnt &= 63;
  210.     if (!cnt) { CFLG = 0; } else {
  211.     if (cnt >= 16) {
  212.         CFLG=XFLG = cnt == 16 ? (val & cmask ? 1 : 0) : 0;
  213.         val = 0;
  214.     } else {
  215.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  216.         val >>= cnt;
  217.     }}
  218.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  219.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  220. }}}}}
  221. void REGPARAM2 CPU_OP_NAME(_e050)(uae_u32 opcode) /* ROXR */
  222. {
  223.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  224.     uae_u32 dstreg = opcode & 7;
  225. {{    uae_u32 cnt = srcreg;
  226. {    uae_s16 data = m68k_dreg(regs, dstreg);
  227. {    uae_u16 val = data;
  228.     uae_u32 cmask = 0x8000;
  229.     uae_u32 carry;
  230.     cnt &= 63;
  231.     for(;cnt;--cnt){
  232.     carry=val&1; val >>= 1;
  233.     if(XFLG) val |= cmask;
  234.     XFLG = carry;
  235.     }
  236.     CFLG = XFLG;
  237.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  238.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  239. }}}}}
  240. void REGPARAM2 CPU_OP_NAME(_e058)(uae_u32 opcode) /* ROR */
  241. {
  242.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  243.     uae_u32 dstreg = opcode & 7;
  244. {{    uae_u32 cnt = srcreg;
  245. {    uae_s16 data = m68k_dreg(regs, dstreg);
  246. {    uae_u16 val = data;
  247.     uae_u32 cmask = 0x8000;
  248.     cnt &= 63;
  249.     if (!cnt) { CFLG = 0; } else {    uae_u32 carry;
  250.     for(;cnt;--cnt){
  251.     carry=val&1; val = val >> 1;
  252.     if(carry) val |= cmask;
  253.     }
  254.     CFLG = carry;
  255. }
  256.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  257.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  258. }}}}}
  259. void REGPARAM2 CPU_OP_NAME(_e060)(uae_u32 opcode) /* ASR */
  260. {
  261.     uae_u32 srcreg = ((opcode >> 9) & 7);
  262.     uae_u32 dstreg = opcode & 7;
  263. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  264. {    uae_s16 data = m68k_dreg(regs, dstreg);
  265. {    uae_u16 val = data;
  266.     uae_u32 cmask = 0x8000;
  267.     uae_u32 sign = cmask & val;
  268.     cnt &= 63;
  269.     VFLG = 0;
  270.     if (!cnt) { CFLG = 0; } else {
  271.     if (cnt >= 16) {
  272.         val = sign ? 0xffff : 0;
  273.         CFLG=XFLG= sign ? 1 : 0;
  274.     } else {
  275.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  276.         val >>= cnt;
  277.         if (sign) val |= 0xffff << (16 - cnt);
  278.     }}
  279.     NFLG = sign != 0;
  280.     ZFLG = val == 0;
  281.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  282. }}}}}
  283. void REGPARAM2 CPU_OP_NAME(_e068)(uae_u32 opcode) /* LSR */
  284. {
  285.     uae_u32 srcreg = ((opcode >> 9) & 7);
  286.     uae_u32 dstreg = opcode & 7;
  287. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  288. {    uae_s16 data = m68k_dreg(regs, dstreg);
  289. {    uae_u16 val = data;
  290.     uae_u32 cmask = 0x8000;
  291.     cnt &= 63;
  292.     if (!cnt) { CFLG = 0; } else {
  293.     if (cnt >= 16) {
  294.         CFLG=XFLG = cnt == 16 ? (val & cmask ? 1 : 0) : 0;
  295.         val = 0;
  296.     } else {
  297.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  298.         val >>= cnt;
  299.     }}
  300.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  301.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  302. }}}}}
  303. void REGPARAM2 CPU_OP_NAME(_e070)(uae_u32 opcode) /* ROXR */
  304. {
  305.     uae_u32 srcreg = ((opcode >> 9) & 7);
  306.     uae_u32 dstreg = opcode & 7;
  307. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  308. {    uae_s16 data = m68k_dreg(regs, dstreg);
  309. {    uae_u16 val = data;
  310.     uae_u32 cmask = 0x8000;
  311.     uae_u32 carry;
  312.     cnt &= 63;
  313.     for(;cnt;--cnt){
  314.     carry=val&1; val >>= 1;
  315.     if(XFLG) val |= cmask;
  316.     XFLG = carry;
  317.     }
  318.     CFLG = XFLG;
  319.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  320.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  321. }}}}}
  322. void REGPARAM2 CPU_OP_NAME(_e078)(uae_u32 opcode) /* ROR */
  323. {
  324.     uae_u32 srcreg = ((opcode >> 9) & 7);
  325.     uae_u32 dstreg = opcode & 7;
  326. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  327. {    uae_s16 data = m68k_dreg(regs, dstreg);
  328. {    uae_u16 val = data;
  329.     uae_u32 cmask = 0x8000;
  330.     cnt &= 63;
  331.     if (!cnt) { CFLG = 0; } else {    uae_u32 carry;
  332.     for(;cnt;--cnt){
  333.     carry=val&1; val = val >> 1;
  334.     if(carry) val |= cmask;
  335.     }
  336.     CFLG = carry;
  337. }
  338.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  339.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  340. }}}}}
  341. void REGPARAM2 CPU_OP_NAME(_e080)(uae_u32 opcode) /* ASR */
  342. {
  343.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  344.     uae_u32 dstreg = opcode & 7;
  345. {{    uae_u32 cnt = srcreg;
  346. {    uae_s32 data = m68k_dreg(regs, dstreg);
  347. {    uae_u32 val = data;
  348.     uae_u32 cmask = 0x80000000;
  349.     uae_u32 sign = cmask & val;
  350.     cnt &= 63;
  351.     VFLG = 0;
  352.     if (!cnt) { CFLG = 0; } else {
  353.     if (cnt >= 32) {
  354.         val = sign ? 0xffffffff : 0;
  355.         CFLG=XFLG= sign ? 1 : 0;
  356.     } else {
  357.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  358.         val >>= cnt;
  359.         if (sign) val |= 0xffffffff << (32 - cnt);
  360.     }}
  361.     NFLG = sign != 0;
  362.     ZFLG = val == 0;
  363.     m68k_dreg(regs, dstreg) = (val);
  364. }}}}}
  365. void REGPARAM2 CPU_OP_NAME(_e088)(uae_u32 opcode) /* LSR */
  366. {
  367.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  368.     uae_u32 dstreg = opcode & 7;
  369. {{    uae_u32 cnt = srcreg;
  370. {    uae_s32 data = m68k_dreg(regs, dstreg);
  371. {    uae_u32 val = data;
  372.     uae_u32 cmask = 0x80000000;
  373.     cnt &= 63;
  374.     if (!cnt) { CFLG = 0; } else {
  375.     if (cnt >= 32) {
  376.         CFLG=XFLG = cnt == 32 ? (val & cmask ? 1 : 0) : 0;
  377.         val = 0;
  378.     } else {
  379.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  380.         val >>= cnt;
  381.     }}
  382.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  383.     m68k_dreg(regs, dstreg) = (val);
  384. }}}}}
  385. void REGPARAM2 CPU_OP_NAME(_e090)(uae_u32 opcode) /* ROXR */
  386. {
  387.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  388.     uae_u32 dstreg = opcode & 7;
  389. {{    uae_u32 cnt = srcreg;
  390. {    uae_s32 data = m68k_dreg(regs, dstreg);
  391. {    uae_u32 val = data;
  392.     uae_u32 cmask = 0x80000000;
  393.     uae_u32 carry;
  394.     cnt &= 63;
  395.     for(;cnt;--cnt){
  396.     carry=val&1; val >>= 1;
  397.     if(XFLG) val |= cmask;
  398.     XFLG = carry;
  399.     }
  400.     CFLG = XFLG;
  401.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  402.     m68k_dreg(regs, dstreg) = (val);
  403. }}}}}
  404. void REGPARAM2 CPU_OP_NAME(_e098)(uae_u32 opcode) /* ROR */
  405. {
  406.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  407.     uae_u32 dstreg = opcode & 7;
  408. {{    uae_u32 cnt = srcreg;
  409. {    uae_s32 data = m68k_dreg(regs, dstreg);
  410. {    uae_u32 val = data;
  411.     uae_u32 cmask = 0x80000000;
  412.     cnt &= 63;
  413.     if (!cnt) { CFLG = 0; } else {    uae_u32 carry;
  414.     for(;cnt;--cnt){
  415.     carry=val&1; val = val >> 1;
  416.     if(carry) val |= cmask;
  417.     }
  418.     CFLG = carry;
  419. }
  420.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  421.     m68k_dreg(regs, dstreg) = (val);
  422. }}}}}
  423. void REGPARAM2 CPU_OP_NAME(_e0a0)(uae_u32 opcode) /* ASR */
  424. {
  425.     uae_u32 srcreg = ((opcode >> 9) & 7);
  426.     uae_u32 dstreg = opcode & 7;
  427. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  428. {    uae_s32 data = m68k_dreg(regs, dstreg);
  429. {    uae_u32 val = data;
  430.     uae_u32 cmask = 0x80000000;
  431.     uae_u32 sign = cmask & val;
  432.     cnt &= 63;
  433.     VFLG = 0;
  434.     if (!cnt) { CFLG = 0; } else {
  435.     if (cnt >= 32) {
  436.         val = sign ? 0xffffffff : 0;
  437.         CFLG=XFLG= sign ? 1 : 0;
  438.     } else {
  439.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  440.         val >>= cnt;
  441.         if (sign) val |= 0xffffffff << (32 - cnt);
  442.     }}
  443.     NFLG = sign != 0;
  444.     ZFLG = val == 0;
  445.     m68k_dreg(regs, dstreg) = (val);
  446. }}}}}
  447. void REGPARAM2 CPU_OP_NAME(_e0a8)(uae_u32 opcode) /* LSR */
  448. {
  449.     uae_u32 srcreg = ((opcode >> 9) & 7);
  450.     uae_u32 dstreg = opcode & 7;
  451. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  452. {    uae_s32 data = m68k_dreg(regs, dstreg);
  453. {    uae_u32 val = data;
  454.     uae_u32 cmask = 0x80000000;
  455.     cnt &= 63;
  456.     if (!cnt) { CFLG = 0; } else {
  457.     if (cnt >= 32) {
  458.         CFLG=XFLG = cnt == 32 ? (val & cmask ? 1 : 0) : 0;
  459.         val = 0;
  460.     } else {
  461.         CFLG=XFLG=(val >> (cnt-1)) & 1;
  462.         val >>= cnt;
  463.     }}
  464.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  465.     m68k_dreg(regs, dstreg) = (val);
  466. }}}}}
  467. void REGPARAM2 CPU_OP_NAME(_e0b0)(uae_u32 opcode) /* ROXR */
  468. {
  469.     uae_u32 srcreg = ((opcode >> 9) & 7);
  470.     uae_u32 dstreg = opcode & 7;
  471. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  472. {    uae_s32 data = m68k_dreg(regs, dstreg);
  473. {    uae_u32 val = data;
  474.     uae_u32 cmask = 0x80000000;
  475.     uae_u32 carry;
  476.     cnt &= 63;
  477.     for(;cnt;--cnt){
  478.     carry=val&1; val >>= 1;
  479.     if(XFLG) val |= cmask;
  480.     XFLG = carry;
  481.     }
  482.     CFLG = XFLG;
  483.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  484.     m68k_dreg(regs, dstreg) = (val);
  485. }}}}}
  486. void REGPARAM2 CPU_OP_NAME(_e0b8)(uae_u32 opcode) /* ROR */
  487. {
  488.     uae_u32 srcreg = ((opcode >> 9) & 7);
  489.     uae_u32 dstreg = opcode & 7;
  490. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  491. {    uae_s32 data = m68k_dreg(regs, dstreg);
  492. {    uae_u32 val = data;
  493.     uae_u32 cmask = 0x80000000;
  494.     cnt &= 63;
  495.     if (!cnt) { CFLG = 0; } else {    uae_u32 carry;
  496.     for(;cnt;--cnt){
  497.     carry=val&1; val = val >> 1;
  498.     if(carry) val |= cmask;
  499.     }
  500.     CFLG = carry;
  501. }
  502.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  503.     m68k_dreg(regs, dstreg) = (val);
  504. }}}}}
  505. void REGPARAM2 CPU_OP_NAME(_e0d0)(uae_u32 opcode) /* ASRW */
  506. {
  507.     uae_u32 srcreg = (opcode & 7);
  508. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  509.     uae_s16 data = get_word(dataa);
  510.     VFLG = 0;
  511. {    uae_u16 val = data;
  512.     uae_u32 cmask = 0x8000;
  513.     uae_u32 sign = cmask & val;
  514.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  515.     NFLG = sign != 0;
  516.     ZFLG = val == 0;
  517.     put_word(dataa,val);
  518. }}}}
  519. void REGPARAM2 CPU_OP_NAME(_e0d8)(uae_u32 opcode) /* ASRW */
  520. {
  521.     uae_u32 srcreg = (opcode & 7);
  522. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  523.     uae_s16 data = get_word(dataa);
  524. {    m68k_areg(regs, srcreg) += 2;
  525.     VFLG = 0;
  526. {    uae_u16 val = data;
  527.     uae_u32 cmask = 0x8000;
  528.     uae_u32 sign = cmask & val;
  529.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  530.     NFLG = sign != 0;
  531.     ZFLG = val == 0;
  532.     put_word(dataa,val);
  533. }}}}}
  534. void REGPARAM2 CPU_OP_NAME(_e0e0)(uae_u32 opcode) /* ASRW */
  535. {
  536.     uae_u32 srcreg = (opcode & 7);
  537. {{    m68k_areg(regs, srcreg) -= 2;
  538. {    uaecptr dataa = m68k_areg(regs, srcreg);
  539.     uae_s16 data = get_word(dataa);
  540.     VFLG = 0;
  541. {    uae_u16 val = data;
  542.     uae_u32 cmask = 0x8000;
  543.     uae_u32 sign = cmask & val;
  544.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  545.     NFLG = sign != 0;
  546.     ZFLG = val == 0;
  547.     put_word(dataa,val);
  548. }}}}}
  549. void REGPARAM2 CPU_OP_NAME(_e0e8)(uae_u32 opcode) /* ASRW */
  550. {
  551.     uae_u32 srcreg = (opcode & 7);
  552. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  553.     uae_s16 data = get_word(dataa);
  554.     VFLG = 0;
  555. {    uae_u16 val = data;
  556.     uae_u32 cmask = 0x8000;
  557.     uae_u32 sign = cmask & val;
  558.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  559.     NFLG = sign != 0;
  560.     ZFLG = val == 0;
  561.     put_word(dataa,val);
  562. }}}}
  563. void REGPARAM2 CPU_OP_NAME(_e0f0)(uae_u32 opcode) /* ASRW */
  564. {
  565.     uae_u32 srcreg = (opcode & 7);
  566. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  567. {    uae_s16 data = get_word(dataa);
  568.     VFLG = 0;
  569. {    uae_u16 val = data;
  570.     uae_u32 cmask = 0x8000;
  571.     uae_u32 sign = cmask & val;
  572.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  573.     NFLG = sign != 0;
  574.     ZFLG = val == 0;
  575.     put_word(dataa,val);
  576. }}}}}
  577. void REGPARAM2 CPU_OP_NAME(_e0f8)(uae_u32 opcode) /* ASRW */
  578. {
  579. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  580.     uae_s16 data = get_word(dataa);
  581.     VFLG = 0;
  582. {    uae_u16 val = data;
  583.     uae_u32 cmask = 0x8000;
  584.     uae_u32 sign = cmask & val;
  585.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  586.     NFLG = sign != 0;
  587.     ZFLG = val == 0;
  588.     put_word(dataa,val);
  589. }}}}
  590. void REGPARAM2 CPU_OP_NAME(_e0f9)(uae_u32 opcode) /* ASRW */
  591. {
  592. {{    uaecptr dataa = nextilong();
  593.     uae_s16 data = get_word(dataa);
  594.     VFLG = 0;
  595. {    uae_u16 val = data;
  596.     uae_u32 cmask = 0x8000;
  597.     uae_u32 sign = cmask & val;
  598.     CFLG=XFLG=val&1; val = (val >> 1) | sign;
  599.     NFLG = sign != 0;
  600.     ZFLG = val == 0;
  601.     put_word(dataa,val);
  602. }}}}
  603. void REGPARAM2 CPU_OP_NAME(_e100)(uae_u32 opcode) /* ASL */
  604. {
  605.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  606.     uae_u32 dstreg = opcode & 7;
  607. {{    uae_u32 cnt = srcreg;
  608. {    uae_s8 data = m68k_dreg(regs, dstreg);
  609. {    uae_u8 val = data;
  610.     uae_u32 cmask = 0x80;
  611.     cnt &= 63;
  612.     VFLG = 0;
  613.     if (!cnt) { CFLG = 0; } else {
  614.     if (cnt >= 8) {
  615.         VFLG = val != 0;
  616.         CFLG=XFLG = cnt == 8 ? val & 1 : 0;
  617.         val = 0;
  618.     } else {
  619.         uae_u32 mask = (0xff << (7 - cnt)) & 0xff;
  620.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  621.         VFLG = (val & mask) != mask && (val & mask) != 0;
  622.         val <<= cnt;
  623.     }}
  624.     NFLG = (val&cmask) != 0;
  625.     ZFLG = val == 0;
  626.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  627. }}}}}
  628. void REGPARAM2 CPU_OP_NAME(_e108)(uae_u32 opcode) /* LSL */
  629. {
  630.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  631.     uae_u32 dstreg = opcode & 7;
  632. {{    uae_u32 cnt = srcreg;
  633. {    uae_s8 data = m68k_dreg(regs, dstreg);
  634. {    uae_u8 val = data;
  635.     uae_u32 cmask = 0x80;
  636.     cnt &= 63;
  637.     if (!cnt) { CFLG = 0; } else {
  638.     if (cnt >= 8) {
  639.         CFLG=XFLG = cnt == 8 ? val & 1 : 0;
  640.         val = 0;
  641.     } else {
  642.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  643.         val <<= cnt;
  644.     }}
  645.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  646.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  647. }}}}}
  648. void REGPARAM2 CPU_OP_NAME(_e110)(uae_u32 opcode) /* ROXL */
  649. {
  650.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  651.     uae_u32 dstreg = opcode & 7;
  652. {{    uae_u32 cnt = srcreg;
  653. {    uae_s8 data = m68k_dreg(regs, dstreg);
  654. {    uae_u8 val = data;
  655.     uae_u32 cmask = 0x80;
  656.     uae_u32 carry;
  657.     cnt &= 63;
  658.     for(;cnt;--cnt){
  659.     carry=val&cmask; val <<= 1;
  660.     if(XFLG) val |= 1;
  661.     XFLG = carry != 0;
  662.     }
  663.     CFLG = XFLG;
  664.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  665.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  666. }}}}}
  667. void REGPARAM2 CPU_OP_NAME(_e118)(uae_u32 opcode) /* ROL */
  668. {
  669.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  670.     uae_u32 dstreg = opcode & 7;
  671. {{    uae_u32 cnt = srcreg;
  672. {    uae_s8 data = m68k_dreg(regs, dstreg);
  673. {    uae_u8 val = data;
  674.     uae_u32 cmask = 0x80;
  675.     cnt &= 63;
  676.     if (!cnt) { CFLG = 0; } else {
  677.     uae_u32 carry;
  678.     for(;cnt;--cnt){
  679.     carry=val&cmask; val <<= 1;
  680.     if(carry) val |= 1;
  681.     }
  682.     CFLG = carry!=0;
  683. }
  684.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  685.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  686. }}}}}
  687. void REGPARAM2 CPU_OP_NAME(_e120)(uae_u32 opcode) /* ASL */
  688. {
  689.     uae_u32 srcreg = ((opcode >> 9) & 7);
  690.     uae_u32 dstreg = opcode & 7;
  691. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  692. {    uae_s8 data = m68k_dreg(regs, dstreg);
  693. {    uae_u8 val = data;
  694.     uae_u32 cmask = 0x80;
  695.     cnt &= 63;
  696.     VFLG = 0;
  697.     if (!cnt) { CFLG = 0; } else {
  698.     if (cnt >= 8) {
  699.         VFLG = val != 0;
  700.         CFLG=XFLG = cnt == 8 ? val & 1 : 0;
  701.         val = 0;
  702.     } else {
  703.         uae_u32 mask = (0xff << (7 - cnt)) & 0xff;
  704.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  705.         VFLG = (val & mask) != mask && (val & mask) != 0;
  706.         val <<= cnt;
  707.     }}
  708.     NFLG = (val&cmask) != 0;
  709.     ZFLG = val == 0;
  710.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  711. }}}}}
  712. void REGPARAM2 CPU_OP_NAME(_e128)(uae_u32 opcode) /* LSL */
  713. {
  714.     uae_u32 srcreg = ((opcode >> 9) & 7);
  715.     uae_u32 dstreg = opcode & 7;
  716. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  717. {    uae_s8 data = m68k_dreg(regs, dstreg);
  718. {    uae_u8 val = data;
  719.     uae_u32 cmask = 0x80;
  720.     cnt &= 63;
  721.     if (!cnt) { CFLG = 0; } else {
  722.     if (cnt >= 8) {
  723.         CFLG=XFLG = cnt == 8 ? val & 1 : 0;
  724.         val = 0;
  725.     } else {
  726.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  727.         val <<= cnt;
  728.     }}
  729.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  730.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  731. }}}}}
  732. void REGPARAM2 CPU_OP_NAME(_e130)(uae_u32 opcode) /* ROXL */
  733. {
  734.     uae_u32 srcreg = ((opcode >> 9) & 7);
  735.     uae_u32 dstreg = opcode & 7;
  736. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  737. {    uae_s8 data = m68k_dreg(regs, dstreg);
  738. {    uae_u8 val = data;
  739.     uae_u32 cmask = 0x80;
  740.     uae_u32 carry;
  741.     cnt &= 63;
  742.     for(;cnt;--cnt){
  743.     carry=val&cmask; val <<= 1;
  744.     if(XFLG) val |= 1;
  745.     XFLG = carry != 0;
  746.     }
  747.     CFLG = XFLG;
  748.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  749.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  750. }}}}}
  751. void REGPARAM2 CPU_OP_NAME(_e138)(uae_u32 opcode) /* ROL */
  752. {
  753.     uae_u32 srcreg = ((opcode >> 9) & 7);
  754.     uae_u32 dstreg = opcode & 7;
  755. {{    uae_s8 cnt = m68k_dreg(regs, srcreg);
  756. {    uae_s8 data = m68k_dreg(regs, dstreg);
  757. {    uae_u8 val = data;
  758.     uae_u32 cmask = 0x80;
  759.     cnt &= 63;
  760.     if (!cnt) { CFLG = 0; } else {
  761.     uae_u32 carry;
  762.     for(;cnt;--cnt){
  763.     carry=val&cmask; val <<= 1;
  764.     if(carry) val |= 1;
  765.     }
  766.     CFLG = carry!=0;
  767. }
  768.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  769.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xff) | ((val) & 0xff);
  770. }}}}}
  771. void REGPARAM2 CPU_OP_NAME(_e140)(uae_u32 opcode) /* ASL */
  772. {
  773.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  774.     uae_u32 dstreg = opcode & 7;
  775. {{    uae_u32 cnt = srcreg;
  776. {    uae_s16 data = m68k_dreg(regs, dstreg);
  777. {    uae_u16 val = data;
  778.     uae_u32 cmask = 0x8000;
  779.     cnt &= 63;
  780.     VFLG = 0;
  781.     if (!cnt) { CFLG = 0; } else {
  782.     if (cnt >= 16) {
  783.         VFLG = val != 0;
  784.         CFLG=XFLG = cnt == 16 ? val & 1 : 0;
  785.         val = 0;
  786.     } else {
  787.         uae_u32 mask = (0xffff << (15 - cnt)) & 0xffff;
  788.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  789.         VFLG = (val & mask) != mask && (val & mask) != 0;
  790.         val <<= cnt;
  791.     }}
  792.     NFLG = (val&cmask) != 0;
  793.     ZFLG = val == 0;
  794.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  795. }}}}}
  796. void REGPARAM2 CPU_OP_NAME(_e148)(uae_u32 opcode) /* LSL */
  797. {
  798.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  799.     uae_u32 dstreg = opcode & 7;
  800. {{    uae_u32 cnt = srcreg;
  801. {    uae_s16 data = m68k_dreg(regs, dstreg);
  802. {    uae_u16 val = data;
  803.     uae_u32 cmask = 0x8000;
  804.     cnt &= 63;
  805.     if (!cnt) { CFLG = 0; } else {
  806.     if (cnt >= 16) {
  807.         CFLG=XFLG = cnt == 16 ? val & 1 : 0;
  808.         val = 0;
  809.     } else {
  810.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  811.         val <<= cnt;
  812.     }}
  813.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  814.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  815. }}}}}
  816. void REGPARAM2 CPU_OP_NAME(_e150)(uae_u32 opcode) /* ROXL */
  817. {
  818.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  819.     uae_u32 dstreg = opcode & 7;
  820. {{    uae_u32 cnt = srcreg;
  821. {    uae_s16 data = m68k_dreg(regs, dstreg);
  822. {    uae_u16 val = data;
  823.     uae_u32 cmask = 0x8000;
  824.     uae_u32 carry;
  825.     cnt &= 63;
  826.     for(;cnt;--cnt){
  827.     carry=val&cmask; val <<= 1;
  828.     if(XFLG) val |= 1;
  829.     XFLG = carry != 0;
  830.     }
  831.     CFLG = XFLG;
  832.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  833.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  834. }}}}}
  835. void REGPARAM2 CPU_OP_NAME(_e158)(uae_u32 opcode) /* ROL */
  836. {
  837.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  838.     uae_u32 dstreg = opcode & 7;
  839. {{    uae_u32 cnt = srcreg;
  840. {    uae_s16 data = m68k_dreg(regs, dstreg);
  841. {    uae_u16 val = data;
  842.     uae_u32 cmask = 0x8000;
  843.     cnt &= 63;
  844.     if (!cnt) { CFLG = 0; } else {
  845.     uae_u32 carry;
  846.     for(;cnt;--cnt){
  847.     carry=val&cmask; val <<= 1;
  848.     if(carry) val |= 1;
  849.     }
  850.     CFLG = carry!=0;
  851. }
  852.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  853.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  854. }}}}}
  855. void REGPARAM2 CPU_OP_NAME(_e160)(uae_u32 opcode) /* ASL */
  856. {
  857.     uae_u32 srcreg = ((opcode >> 9) & 7);
  858.     uae_u32 dstreg = opcode & 7;
  859. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  860. {    uae_s16 data = m68k_dreg(regs, dstreg);
  861. {    uae_u16 val = data;
  862.     uae_u32 cmask = 0x8000;
  863.     cnt &= 63;
  864.     VFLG = 0;
  865.     if (!cnt) { CFLG = 0; } else {
  866.     if (cnt >= 16) {
  867.         VFLG = val != 0;
  868.         CFLG=XFLG = cnt == 16 ? val & 1 : 0;
  869.         val = 0;
  870.     } else {
  871.         uae_u32 mask = (0xffff << (15 - cnt)) & 0xffff;
  872.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  873.         VFLG = (val & mask) != mask && (val & mask) != 0;
  874.         val <<= cnt;
  875.     }}
  876.     NFLG = (val&cmask) != 0;
  877.     ZFLG = val == 0;
  878.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  879. }}}}}
  880. void REGPARAM2 CPU_OP_NAME(_e168)(uae_u32 opcode) /* LSL */
  881. {
  882.     uae_u32 srcreg = ((opcode >> 9) & 7);
  883.     uae_u32 dstreg = opcode & 7;
  884. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  885. {    uae_s16 data = m68k_dreg(regs, dstreg);
  886. {    uae_u16 val = data;
  887.     uae_u32 cmask = 0x8000;
  888.     cnt &= 63;
  889.     if (!cnt) { CFLG = 0; } else {
  890.     if (cnt >= 16) {
  891.         CFLG=XFLG = cnt == 16 ? val & 1 : 0;
  892.         val = 0;
  893.     } else {
  894.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  895.         val <<= cnt;
  896.     }}
  897.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  898.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  899. }}}}}
  900. void REGPARAM2 CPU_OP_NAME(_e170)(uae_u32 opcode) /* ROXL */
  901. {
  902.     uae_u32 srcreg = ((opcode >> 9) & 7);
  903.     uae_u32 dstreg = opcode & 7;
  904. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  905. {    uae_s16 data = m68k_dreg(regs, dstreg);
  906. {    uae_u16 val = data;
  907.     uae_u32 cmask = 0x8000;
  908.     uae_u32 carry;
  909.     cnt &= 63;
  910.     for(;cnt;--cnt){
  911.     carry=val&cmask; val <<= 1;
  912.     if(XFLG) val |= 1;
  913.     XFLG = carry != 0;
  914.     }
  915.     CFLG = XFLG;
  916.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  917.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  918. }}}}}
  919. void REGPARAM2 CPU_OP_NAME(_e178)(uae_u32 opcode) /* ROL */
  920. {
  921.     uae_u32 srcreg = ((opcode >> 9) & 7);
  922.     uae_u32 dstreg = opcode & 7;
  923. {{    uae_s16 cnt = m68k_dreg(regs, srcreg);
  924. {    uae_s16 data = m68k_dreg(regs, dstreg);
  925. {    uae_u16 val = data;
  926.     uae_u32 cmask = 0x8000;
  927.     cnt &= 63;
  928.     if (!cnt) { CFLG = 0; } else {
  929.     uae_u32 carry;
  930.     for(;cnt;--cnt){
  931.     carry=val&cmask; val <<= 1;
  932.     if(carry) val |= 1;
  933.     }
  934.     CFLG = carry!=0;
  935. }
  936.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  937.     m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((val) & 0xffff);
  938. }}}}}
  939. void REGPARAM2 CPU_OP_NAME(_e180)(uae_u32 opcode) /* ASL */
  940. {
  941.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  942.     uae_u32 dstreg = opcode & 7;
  943. {{    uae_u32 cnt = srcreg;
  944. {    uae_s32 data = m68k_dreg(regs, dstreg);
  945. {    uae_u32 val = data;
  946.     uae_u32 cmask = 0x80000000;
  947.     cnt &= 63;
  948.     VFLG = 0;
  949.     if (!cnt) { CFLG = 0; } else {
  950.     if (cnt >= 32) {
  951.         VFLG = val != 0;
  952.         CFLG=XFLG = cnt == 32 ? val & 1 : 0;
  953.         val = 0;
  954.     } else {
  955.         uae_u32 mask = (0xffffffff << (31 - cnt)) & 0xffffffff;
  956.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  957.         VFLG = (val & mask) != mask && (val & mask) != 0;
  958.         val <<= cnt;
  959.     }}
  960.     NFLG = (val&cmask) != 0;
  961.     ZFLG = val == 0;
  962.     m68k_dreg(regs, dstreg) = (val);
  963. }}}}}
  964. void REGPARAM2 CPU_OP_NAME(_e188)(uae_u32 opcode) /* LSL */
  965. {
  966.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  967.     uae_u32 dstreg = opcode & 7;
  968. {{    uae_u32 cnt = srcreg;
  969. {    uae_s32 data = m68k_dreg(regs, dstreg);
  970. {    uae_u32 val = data;
  971.     uae_u32 cmask = 0x80000000;
  972.     cnt &= 63;
  973.     if (!cnt) { CFLG = 0; } else {
  974.     if (cnt >= 32) {
  975.         CFLG=XFLG = cnt == 32 ? val & 1 : 0;
  976.         val = 0;
  977.     } else {
  978.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  979.         val <<= cnt;
  980.     }}
  981.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  982.     m68k_dreg(regs, dstreg) = (val);
  983. }}}}}
  984. void REGPARAM2 CPU_OP_NAME(_e190)(uae_u32 opcode) /* ROXL */
  985. {
  986.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  987.     uae_u32 dstreg = opcode & 7;
  988. {{    uae_u32 cnt = srcreg;
  989. {    uae_s32 data = m68k_dreg(regs, dstreg);
  990. {    uae_u32 val = data;
  991.     uae_u32 cmask = 0x80000000;
  992.     uae_u32 carry;
  993.     cnt &= 63;
  994.     for(;cnt;--cnt){
  995.     carry=val&cmask; val <<= 1;
  996.     if(XFLG) val |= 1;
  997.     XFLG = carry != 0;
  998.     }
  999.     CFLG = XFLG;
  1000.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  1001.     m68k_dreg(regs, dstreg) = (val);
  1002. }}}}}
  1003. void REGPARAM2 CPU_OP_NAME(_e198)(uae_u32 opcode) /* ROL */
  1004. {
  1005.     uae_u32 srcreg = imm8_table[((opcode >> 9) & 7)];
  1006.     uae_u32 dstreg = opcode & 7;
  1007. {{    uae_u32 cnt = srcreg;
  1008. {    uae_s32 data = m68k_dreg(regs, dstreg);
  1009. {    uae_u32 val = data;
  1010.     uae_u32 cmask = 0x80000000;
  1011.     cnt &= 63;
  1012.     if (!cnt) { CFLG = 0; } else {
  1013.     uae_u32 carry;
  1014.     for(;cnt;--cnt){
  1015.     carry=val&cmask; val <<= 1;
  1016.     if(carry) val |= 1;
  1017.     }
  1018.     CFLG = carry!=0;
  1019. }
  1020.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  1021.     m68k_dreg(regs, dstreg) = (val);
  1022. }}}}}
  1023. void REGPARAM2 CPU_OP_NAME(_e1a0)(uae_u32 opcode) /* ASL */
  1024. {
  1025.     uae_u32 srcreg = ((opcode >> 9) & 7);
  1026.     uae_u32 dstreg = opcode & 7;
  1027. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  1028. {    uae_s32 data = m68k_dreg(regs, dstreg);
  1029. {    uae_u32 val = data;
  1030.     uae_u32 cmask = 0x80000000;
  1031.     cnt &= 63;
  1032.     VFLG = 0;
  1033.     if (!cnt) { CFLG = 0; } else {
  1034.     if (cnt >= 32) {
  1035.         VFLG = val != 0;
  1036.         CFLG=XFLG = cnt == 32 ? val & 1 : 0;
  1037.         val = 0;
  1038.     } else {
  1039.         uae_u32 mask = (0xffffffff << (31 - cnt)) & 0xffffffff;
  1040.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  1041.         VFLG = (val & mask) != mask && (val & mask) != 0;
  1042.         val <<= cnt;
  1043.     }}
  1044.     NFLG = (val&cmask) != 0;
  1045.     ZFLG = val == 0;
  1046.     m68k_dreg(regs, dstreg) = (val);
  1047. }}}}}
  1048. void REGPARAM2 CPU_OP_NAME(_e1a8)(uae_u32 opcode) /* LSL */
  1049. {
  1050.     uae_u32 srcreg = ((opcode >> 9) & 7);
  1051.     uae_u32 dstreg = opcode & 7;
  1052. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  1053. {    uae_s32 data = m68k_dreg(regs, dstreg);
  1054. {    uae_u32 val = data;
  1055.     uae_u32 cmask = 0x80000000;
  1056.     cnt &= 63;
  1057.     if (!cnt) { CFLG = 0; } else {
  1058.     if (cnt >= 32) {
  1059.         CFLG=XFLG = cnt == 32 ? val & 1 : 0;
  1060.         val = 0;
  1061.     } else {
  1062.         CFLG=XFLG=(val << (cnt-1)) & cmask ? 1 : 0;
  1063.         val <<= cnt;
  1064.     }}
  1065.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  1066.     m68k_dreg(regs, dstreg) = (val);
  1067. }}}}}
  1068. void REGPARAM2 CPU_OP_NAME(_e1b0)(uae_u32 opcode) /* ROXL */
  1069. {
  1070.     uae_u32 srcreg = ((opcode >> 9) & 7);
  1071.     uae_u32 dstreg = opcode & 7;
  1072. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  1073. {    uae_s32 data = m68k_dreg(regs, dstreg);
  1074. {    uae_u32 val = data;
  1075.     uae_u32 cmask = 0x80000000;
  1076.     uae_u32 carry;
  1077.     cnt &= 63;
  1078.     for(;cnt;--cnt){
  1079.     carry=val&cmask; val <<= 1;
  1080.     if(XFLG) val |= 1;
  1081.     XFLG = carry != 0;
  1082.     }
  1083.     CFLG = XFLG;
  1084.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  1085.     m68k_dreg(regs, dstreg) = (val);
  1086. }}}}}
  1087. void REGPARAM2 CPU_OP_NAME(_e1b8)(uae_u32 opcode) /* ROL */
  1088. {
  1089.     uae_u32 srcreg = ((opcode >> 9) & 7);
  1090.     uae_u32 dstreg = opcode & 7;
  1091. {{    uae_s32 cnt = m68k_dreg(regs, srcreg);
  1092. {    uae_s32 data = m68k_dreg(regs, dstreg);
  1093. {    uae_u32 val = data;
  1094.     uae_u32 cmask = 0x80000000;
  1095.     cnt &= 63;
  1096.     if (!cnt) { CFLG = 0; } else {
  1097.     uae_u32 carry;
  1098.     for(;cnt;--cnt){
  1099.     carry=val&cmask; val <<= 1;
  1100.     if(carry) val |= 1;
  1101.     }
  1102.     CFLG = carry!=0;
  1103. }
  1104.     NFLG = (val & cmask) != 0; ZFLG = val == 0; VFLG = 0;
  1105.     m68k_dreg(regs, dstreg) = (val);
  1106. }}}}}
  1107. void REGPARAM2 CPU_OP_NAME(_e1d0)(uae_u32 opcode) /* ASLW */
  1108. {
  1109.     uae_u32 srcreg = (opcode & 7);
  1110. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1111.     uae_s16 data = get_word(dataa);
  1112.     VFLG = 0;
  1113. {    uae_u16 val = data;
  1114.     uae_u32 cmask = 0x8000;
  1115.     uae_u32 sign = cmask & val;
  1116.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1117.     if ((val&cmask)!=sign) VFLG=1;
  1118.     NFLG = (val&cmask) != 0;
  1119.     ZFLG = val == 0;
  1120.     put_word(dataa,val);
  1121. }}}}
  1122. void REGPARAM2 CPU_OP_NAME(_e1d8)(uae_u32 opcode) /* ASLW */
  1123. {
  1124.     uae_u32 srcreg = (opcode & 7);
  1125. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1126.     uae_s16 data = get_word(dataa);
  1127. {    m68k_areg(regs, srcreg) += 2;
  1128.     VFLG = 0;
  1129. {    uae_u16 val = data;
  1130.     uae_u32 cmask = 0x8000;
  1131.     uae_u32 sign = cmask & val;
  1132.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1133.     if ((val&cmask)!=sign) VFLG=1;
  1134.     NFLG = (val&cmask) != 0;
  1135.     ZFLG = val == 0;
  1136.     put_word(dataa,val);
  1137. }}}}}
  1138. void REGPARAM2 CPU_OP_NAME(_e1e0)(uae_u32 opcode) /* ASLW */
  1139. {
  1140.     uae_u32 srcreg = (opcode & 7);
  1141. {{    m68k_areg(regs, srcreg) -= 2;
  1142. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1143.     uae_s16 data = get_word(dataa);
  1144.     VFLG = 0;
  1145. {    uae_u16 val = data;
  1146.     uae_u32 cmask = 0x8000;
  1147.     uae_u32 sign = cmask & val;
  1148.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1149.     if ((val&cmask)!=sign) VFLG=1;
  1150.     NFLG = (val&cmask) != 0;
  1151.     ZFLG = val == 0;
  1152.     put_word(dataa,val);
  1153. }}}}}
  1154. void REGPARAM2 CPU_OP_NAME(_e1e8)(uae_u32 opcode) /* ASLW */
  1155. {
  1156.     uae_u32 srcreg = (opcode & 7);
  1157. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1158.     uae_s16 data = get_word(dataa);
  1159.     VFLG = 0;
  1160. {    uae_u16 val = data;
  1161.     uae_u32 cmask = 0x8000;
  1162.     uae_u32 sign = cmask & val;
  1163.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1164.     if ((val&cmask)!=sign) VFLG=1;
  1165.     NFLG = (val&cmask) != 0;
  1166.     ZFLG = val == 0;
  1167.     put_word(dataa,val);
  1168. }}}}
  1169. void REGPARAM2 CPU_OP_NAME(_e1f0)(uae_u32 opcode) /* ASLW */
  1170. {
  1171.     uae_u32 srcreg = (opcode & 7);
  1172. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1173. {    uae_s16 data = get_word(dataa);
  1174.     VFLG = 0;
  1175. {    uae_u16 val = data;
  1176.     uae_u32 cmask = 0x8000;
  1177.     uae_u32 sign = cmask & val;
  1178.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1179.     if ((val&cmask)!=sign) VFLG=1;
  1180.     NFLG = (val&cmask) != 0;
  1181.     ZFLG = val == 0;
  1182.     put_word(dataa,val);
  1183. }}}}}
  1184. void REGPARAM2 CPU_OP_NAME(_e1f8)(uae_u32 opcode) /* ASLW */
  1185. {
  1186. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1187.     uae_s16 data = get_word(dataa);
  1188.     VFLG = 0;
  1189. {    uae_u16 val = data;
  1190.     uae_u32 cmask = 0x8000;
  1191.     uae_u32 sign = cmask & val;
  1192.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1193.     if ((val&cmask)!=sign) VFLG=1;
  1194.     NFLG = (val&cmask) != 0;
  1195.     ZFLG = val == 0;
  1196.     put_word(dataa,val);
  1197. }}}}
  1198. void REGPARAM2 CPU_OP_NAME(_e1f9)(uae_u32 opcode) /* ASLW */
  1199. {
  1200. {{    uaecptr dataa = nextilong();
  1201.     uae_s16 data = get_word(dataa);
  1202.     VFLG = 0;
  1203. {    uae_u16 val = data;
  1204.     uae_u32 cmask = 0x8000;
  1205.     uae_u32 sign = cmask & val;
  1206.     CFLG=XFLG=(val&cmask)!=0; val <<= 1;
  1207.     if ((val&cmask)!=sign) VFLG=1;
  1208.     NFLG = (val&cmask) != 0;
  1209.     ZFLG = val == 0;
  1210.     put_word(dataa,val);
  1211. }}}}
  1212. void REGPARAM2 CPU_OP_NAME(_e2d0)(uae_u32 opcode) /* LSRW */
  1213. {
  1214.     uae_u32 srcreg = (opcode & 7);
  1215. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1216.     uae_s16 data = get_word(dataa);
  1217. {    uae_u16 val = data;
  1218.     uae_u32 carry = val&1;
  1219.     val >>= 1;
  1220.     VFLG = CFLG = 0;
  1221.     ZFLG = ((uae_s16)(val)) == 0;
  1222.     NFLG = ((uae_s16)(val)) < 0;
  1223. CFLG = XFLG = carry!=0;
  1224.     put_word(dataa,val);
  1225. }}}}
  1226. void REGPARAM2 CPU_OP_NAME(_e2d8)(uae_u32 opcode) /* LSRW */
  1227. {
  1228.     uae_u32 srcreg = (opcode & 7);
  1229. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1230.     uae_s16 data = get_word(dataa);
  1231. {    m68k_areg(regs, srcreg) += 2;
  1232. {    uae_u16 val = data;
  1233.     uae_u32 carry = val&1;
  1234.     val >>= 1;
  1235.     VFLG = CFLG = 0;
  1236.     ZFLG = ((uae_s16)(val)) == 0;
  1237.     NFLG = ((uae_s16)(val)) < 0;
  1238. CFLG = XFLG = carry!=0;
  1239.     put_word(dataa,val);
  1240. }}}}}
  1241. void REGPARAM2 CPU_OP_NAME(_e2e0)(uae_u32 opcode) /* LSRW */
  1242. {
  1243.     uae_u32 srcreg = (opcode & 7);
  1244. {{    m68k_areg(regs, srcreg) -= 2;
  1245. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1246.     uae_s16 data = get_word(dataa);
  1247. {    uae_u16 val = data;
  1248.     uae_u32 carry = val&1;
  1249.     val >>= 1;
  1250.     VFLG = CFLG = 0;
  1251.     ZFLG = ((uae_s16)(val)) == 0;
  1252.     NFLG = ((uae_s16)(val)) < 0;
  1253. CFLG = XFLG = carry!=0;
  1254.     put_word(dataa,val);
  1255. }}}}}
  1256. void REGPARAM2 CPU_OP_NAME(_e2e8)(uae_u32 opcode) /* LSRW */
  1257. {
  1258.     uae_u32 srcreg = (opcode & 7);
  1259. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1260.     uae_s16 data = get_word(dataa);
  1261. {    uae_u16 val = data;
  1262.     uae_u32 carry = val&1;
  1263.     val >>= 1;
  1264.     VFLG = CFLG = 0;
  1265.     ZFLG = ((uae_s16)(val)) == 0;
  1266.     NFLG = ((uae_s16)(val)) < 0;
  1267. CFLG = XFLG = carry!=0;
  1268.     put_word(dataa,val);
  1269. }}}}
  1270. void REGPARAM2 CPU_OP_NAME(_e2f0)(uae_u32 opcode) /* LSRW */
  1271. {
  1272.     uae_u32 srcreg = (opcode & 7);
  1273. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1274. {    uae_s16 data = get_word(dataa);
  1275. {    uae_u16 val = data;
  1276.     uae_u32 carry = val&1;
  1277.     val >>= 1;
  1278.     VFLG = CFLG = 0;
  1279.     ZFLG = ((uae_s16)(val)) == 0;
  1280.     NFLG = ((uae_s16)(val)) < 0;
  1281. CFLG = XFLG = carry!=0;
  1282.     put_word(dataa,val);
  1283. }}}}}
  1284. void REGPARAM2 CPU_OP_NAME(_e2f8)(uae_u32 opcode) /* LSRW */
  1285. {
  1286. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1287.     uae_s16 data = get_word(dataa);
  1288. {    uae_u16 val = data;
  1289.     uae_u32 carry = val&1;
  1290.     val >>= 1;
  1291.     VFLG = CFLG = 0;
  1292.     ZFLG = ((uae_s16)(val)) == 0;
  1293.     NFLG = ((uae_s16)(val)) < 0;
  1294. CFLG = XFLG = carry!=0;
  1295.     put_word(dataa,val);
  1296. }}}}
  1297. void REGPARAM2 CPU_OP_NAME(_e2f9)(uae_u32 opcode) /* LSRW */
  1298. {
  1299. {{    uaecptr dataa = nextilong();
  1300.     uae_s16 data = get_word(dataa);
  1301. {    uae_u16 val = data;
  1302.     uae_u32 carry = val&1;
  1303.     val >>= 1;
  1304.     VFLG = CFLG = 0;
  1305.     ZFLG = ((uae_s16)(val)) == 0;
  1306.     NFLG = ((uae_s16)(val)) < 0;
  1307. CFLG = XFLG = carry!=0;
  1308.     put_word(dataa,val);
  1309. }}}}
  1310. void REGPARAM2 CPU_OP_NAME(_e3d0)(uae_u32 opcode) /* LSLW */
  1311. {
  1312.     uae_u32 srcreg = (opcode & 7);
  1313. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1314.     uae_s16 data = get_word(dataa);
  1315. {    uae_u16 val = data;
  1316.     uae_u32 cmask = 0x8000;
  1317.     uae_u32 carry = val&cmask;
  1318.     val <<= 1;
  1319.     VFLG = CFLG = 0;
  1320.     ZFLG = ((uae_s16)(val)) == 0;
  1321.     NFLG = ((uae_s16)(val)) < 0;
  1322. CFLG = XFLG = carry!=0;
  1323.     put_word(dataa,val);
  1324. }}}}
  1325. void REGPARAM2 CPU_OP_NAME(_e3d8)(uae_u32 opcode) /* LSLW */
  1326. {
  1327.     uae_u32 srcreg = (opcode & 7);
  1328. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1329.     uae_s16 data = get_word(dataa);
  1330. {    m68k_areg(regs, srcreg) += 2;
  1331. {    uae_u16 val = data;
  1332.     uae_u32 cmask = 0x8000;
  1333.     uae_u32 carry = val&cmask;
  1334.     val <<= 1;
  1335.     VFLG = CFLG = 0;
  1336.     ZFLG = ((uae_s16)(val)) == 0;
  1337.     NFLG = ((uae_s16)(val)) < 0;
  1338. CFLG = XFLG = carry!=0;
  1339.     put_word(dataa,val);
  1340. }}}}}
  1341. void REGPARAM2 CPU_OP_NAME(_e3e0)(uae_u32 opcode) /* LSLW */
  1342. {
  1343.     uae_u32 srcreg = (opcode & 7);
  1344. {{    m68k_areg(regs, srcreg) -= 2;
  1345. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1346.     uae_s16 data = get_word(dataa);
  1347. {    uae_u16 val = data;
  1348.     uae_u32 cmask = 0x8000;
  1349.     uae_u32 carry = val&cmask;
  1350.     val <<= 1;
  1351.     VFLG = CFLG = 0;
  1352.     ZFLG = ((uae_s16)(val)) == 0;
  1353.     NFLG = ((uae_s16)(val)) < 0;
  1354. CFLG = XFLG = carry!=0;
  1355.     put_word(dataa,val);
  1356. }}}}}
  1357. void REGPARAM2 CPU_OP_NAME(_e3e8)(uae_u32 opcode) /* LSLW */
  1358. {
  1359.     uae_u32 srcreg = (opcode & 7);
  1360. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1361.     uae_s16 data = get_word(dataa);
  1362. {    uae_u16 val = data;
  1363.     uae_u32 cmask = 0x8000;
  1364.     uae_u32 carry = val&cmask;
  1365.     val <<= 1;
  1366.     VFLG = CFLG = 0;
  1367.     ZFLG = ((uae_s16)(val)) == 0;
  1368.     NFLG = ((uae_s16)(val)) < 0;
  1369. CFLG = XFLG = carry!=0;
  1370.     put_word(dataa,val);
  1371. }}}}
  1372. void REGPARAM2 CPU_OP_NAME(_e3f0)(uae_u32 opcode) /* LSLW */
  1373. {
  1374.     uae_u32 srcreg = (opcode & 7);
  1375. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1376. {    uae_s16 data = get_word(dataa);
  1377. {    uae_u16 val = data;
  1378.     uae_u32 cmask = 0x8000;
  1379.     uae_u32 carry = val&cmask;
  1380.     val <<= 1;
  1381.     VFLG = CFLG = 0;
  1382.     ZFLG = ((uae_s16)(val)) == 0;
  1383.     NFLG = ((uae_s16)(val)) < 0;
  1384. CFLG = XFLG = carry!=0;
  1385.     put_word(dataa,val);
  1386. }}}}}
  1387. void REGPARAM2 CPU_OP_NAME(_e3f8)(uae_u32 opcode) /* LSLW */
  1388. {
  1389. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1390.     uae_s16 data = get_word(dataa);
  1391. {    uae_u16 val = data;
  1392.     uae_u32 cmask = 0x8000;
  1393.     uae_u32 carry = val&cmask;
  1394.     val <<= 1;
  1395.     VFLG = CFLG = 0;
  1396.     ZFLG = ((uae_s16)(val)) == 0;
  1397.     NFLG = ((uae_s16)(val)) < 0;
  1398. CFLG = XFLG = carry!=0;
  1399.     put_word(dataa,val);
  1400. }}}}
  1401. void REGPARAM2 CPU_OP_NAME(_e3f9)(uae_u32 opcode) /* LSLW */
  1402. {
  1403. {{    uaecptr dataa = nextilong();
  1404.     uae_s16 data = get_word(dataa);
  1405. {    uae_u16 val = data;
  1406.     uae_u32 cmask = 0x8000;
  1407.     uae_u32 carry = val&cmask;
  1408.     val <<= 1;
  1409.     VFLG = CFLG = 0;
  1410.     ZFLG = ((uae_s16)(val)) == 0;
  1411.     NFLG = ((uae_s16)(val)) < 0;
  1412. CFLG = XFLG = carry!=0;
  1413.     put_word(dataa,val);
  1414. }}}}
  1415. void REGPARAM2 CPU_OP_NAME(_e4d0)(uae_u32 opcode) /* ROXRW */
  1416. {
  1417.     uae_u32 srcreg = (opcode & 7);
  1418. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1419.     uae_s16 data = get_word(dataa);
  1420. {    uae_u16 val = data;
  1421.     uae_u32 carry = val&1;
  1422.     uae_u32 cmask = 0x8000;
  1423.     val >>= 1;
  1424.     if(XFLG) val |= cmask;
  1425.     XFLG = carry != 0;
  1426.     VFLG = CFLG = 0;
  1427.     ZFLG = ((uae_s16)(val)) == 0;
  1428.     NFLG = ((uae_s16)(val)) < 0;
  1429. XFLG = CFLG = carry!=0;
  1430.     put_word(dataa,val);
  1431. }}}}
  1432. void REGPARAM2 CPU_OP_NAME(_e4d8)(uae_u32 opcode) /* ROXRW */
  1433. {
  1434.     uae_u32 srcreg = (opcode & 7);
  1435. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1436.     uae_s16 data = get_word(dataa);
  1437. {    m68k_areg(regs, srcreg) += 2;
  1438. {    uae_u16 val = data;
  1439.     uae_u32 carry = val&1;
  1440.     uae_u32 cmask = 0x8000;
  1441.     val >>= 1;
  1442.     if(XFLG) val |= cmask;
  1443.     XFLG = carry != 0;
  1444.     VFLG = CFLG = 0;
  1445.     ZFLG = ((uae_s16)(val)) == 0;
  1446.     NFLG = ((uae_s16)(val)) < 0;
  1447. XFLG = CFLG = carry!=0;
  1448.     put_word(dataa,val);
  1449. }}}}}
  1450. void REGPARAM2 CPU_OP_NAME(_e4e0)(uae_u32 opcode) /* ROXRW */
  1451. {
  1452.     uae_u32 srcreg = (opcode & 7);
  1453. {{    m68k_areg(regs, srcreg) -= 2;
  1454. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1455.     uae_s16 data = get_word(dataa);
  1456. {    uae_u16 val = data;
  1457.     uae_u32 carry = val&1;
  1458.     uae_u32 cmask = 0x8000;
  1459.     val >>= 1;
  1460.     if(XFLG) val |= cmask;
  1461.     XFLG = carry != 0;
  1462.     VFLG = CFLG = 0;
  1463.     ZFLG = ((uae_s16)(val)) == 0;
  1464.     NFLG = ((uae_s16)(val)) < 0;
  1465. XFLG = CFLG = carry!=0;
  1466.     put_word(dataa,val);
  1467. }}}}}
  1468. void REGPARAM2 CPU_OP_NAME(_e4e8)(uae_u32 opcode) /* ROXRW */
  1469. {
  1470.     uae_u32 srcreg = (opcode & 7);
  1471. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1472.     uae_s16 data = get_word(dataa);
  1473. {    uae_u16 val = data;
  1474.     uae_u32 carry = val&1;
  1475.     uae_u32 cmask = 0x8000;
  1476.     val >>= 1;
  1477.     if(XFLG) val |= cmask;
  1478.     XFLG = carry != 0;
  1479.     VFLG = CFLG = 0;
  1480.     ZFLG = ((uae_s16)(val)) == 0;
  1481.     NFLG = ((uae_s16)(val)) < 0;
  1482. XFLG = CFLG = carry!=0;
  1483.     put_word(dataa,val);
  1484. }}}}
  1485. void REGPARAM2 CPU_OP_NAME(_e4f0)(uae_u32 opcode) /* ROXRW */
  1486. {
  1487.     uae_u32 srcreg = (opcode & 7);
  1488. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1489. {    uae_s16 data = get_word(dataa);
  1490. {    uae_u16 val = data;
  1491.     uae_u32 carry = val&1;
  1492.     uae_u32 cmask = 0x8000;
  1493.     val >>= 1;
  1494.     if(XFLG) val |= cmask;
  1495.     XFLG = carry != 0;
  1496.     VFLG = CFLG = 0;
  1497.     ZFLG = ((uae_s16)(val)) == 0;
  1498.     NFLG = ((uae_s16)(val)) < 0;
  1499. XFLG = CFLG = carry!=0;
  1500.     put_word(dataa,val);
  1501. }}}}}
  1502. void REGPARAM2 CPU_OP_NAME(_e4f8)(uae_u32 opcode) /* ROXRW */
  1503. {
  1504. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1505.     uae_s16 data = get_word(dataa);
  1506. {    uae_u16 val = data;
  1507.     uae_u32 carry = val&1;
  1508.     uae_u32 cmask = 0x8000;
  1509.     val >>= 1;
  1510.     if(XFLG) val |= cmask;
  1511.     XFLG = carry != 0;
  1512.     VFLG = CFLG = 0;
  1513.     ZFLG = ((uae_s16)(val)) == 0;
  1514.     NFLG = ((uae_s16)(val)) < 0;
  1515. XFLG = CFLG = carry!=0;
  1516.     put_word(dataa,val);
  1517. }}}}
  1518. void REGPARAM2 CPU_OP_NAME(_e4f9)(uae_u32 opcode) /* ROXRW */
  1519. {
  1520. {{    uaecptr dataa = nextilong();
  1521.     uae_s16 data = get_word(dataa);
  1522. {    uae_u16 val = data;
  1523.     uae_u32 carry = val&1;
  1524.     uae_u32 cmask = 0x8000;
  1525.     val >>= 1;
  1526.     if(XFLG) val |= cmask;
  1527.     XFLG = carry != 0;
  1528.     VFLG = CFLG = 0;
  1529.     ZFLG = ((uae_s16)(val)) == 0;
  1530.     NFLG = ((uae_s16)(val)) < 0;
  1531. XFLG = CFLG = carry!=0;
  1532.     put_word(dataa,val);
  1533. }}}}
  1534. void REGPARAM2 CPU_OP_NAME(_e5d0)(uae_u32 opcode) /* ROXLW */
  1535. {
  1536.     uae_u32 srcreg = (opcode & 7);
  1537. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1538.     uae_s16 data = get_word(dataa);
  1539. {    uae_u16 val = data;
  1540.     uae_u32 cmask = 0x8000;
  1541.     uae_u32 carry = val&cmask;
  1542.     val <<= 1;
  1543.     if(XFLG) val |= 1;
  1544.     XFLG = carry != 0;
  1545.     VFLG = CFLG = 0;
  1546.     ZFLG = ((uae_s16)(val)) == 0;
  1547.     NFLG = ((uae_s16)(val)) < 0;
  1548. XFLG = CFLG = carry!=0;
  1549.     put_word(dataa,val);
  1550. }}}}
  1551. void REGPARAM2 CPU_OP_NAME(_e5d8)(uae_u32 opcode) /* ROXLW */
  1552. {
  1553.     uae_u32 srcreg = (opcode & 7);
  1554. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1555.     uae_s16 data = get_word(dataa);
  1556. {    m68k_areg(regs, srcreg) += 2;
  1557. {    uae_u16 val = data;
  1558.     uae_u32 cmask = 0x8000;
  1559.     uae_u32 carry = val&cmask;
  1560.     val <<= 1;
  1561.     if(XFLG) val |= 1;
  1562.     XFLG = carry != 0;
  1563.     VFLG = CFLG = 0;
  1564.     ZFLG = ((uae_s16)(val)) == 0;
  1565.     NFLG = ((uae_s16)(val)) < 0;
  1566. XFLG = CFLG = carry!=0;
  1567.     put_word(dataa,val);
  1568. }}}}}
  1569. void REGPARAM2 CPU_OP_NAME(_e5e0)(uae_u32 opcode) /* ROXLW */
  1570. {
  1571.     uae_u32 srcreg = (opcode & 7);
  1572. {{    m68k_areg(regs, srcreg) -= 2;
  1573. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1574.     uae_s16 data = get_word(dataa);
  1575. {    uae_u16 val = data;
  1576.     uae_u32 cmask = 0x8000;
  1577.     uae_u32 carry = val&cmask;
  1578.     val <<= 1;
  1579.     if(XFLG) val |= 1;
  1580.     XFLG = carry != 0;
  1581.     VFLG = CFLG = 0;
  1582.     ZFLG = ((uae_s16)(val)) == 0;
  1583.     NFLG = ((uae_s16)(val)) < 0;
  1584. XFLG = CFLG = carry!=0;
  1585.     put_word(dataa,val);
  1586. }}}}}
  1587. void REGPARAM2 CPU_OP_NAME(_e5e8)(uae_u32 opcode) /* ROXLW */
  1588. {
  1589.     uae_u32 srcreg = (opcode & 7);
  1590. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1591.     uae_s16 data = get_word(dataa);
  1592. {    uae_u16 val = data;
  1593.     uae_u32 cmask = 0x8000;
  1594.     uae_u32 carry = val&cmask;
  1595.     val <<= 1;
  1596.     if(XFLG) val |= 1;
  1597.     XFLG = carry != 0;
  1598.     VFLG = CFLG = 0;
  1599.     ZFLG = ((uae_s16)(val)) == 0;
  1600.     NFLG = ((uae_s16)(val)) < 0;
  1601. XFLG = CFLG = carry!=0;
  1602.     put_word(dataa,val);
  1603. }}}}
  1604. void REGPARAM2 CPU_OP_NAME(_e5f0)(uae_u32 opcode) /* ROXLW */
  1605. {
  1606.     uae_u32 srcreg = (opcode & 7);
  1607. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1608. {    uae_s16 data = get_word(dataa);
  1609. {    uae_u16 val = data;
  1610.     uae_u32 cmask = 0x8000;
  1611.     uae_u32 carry = val&cmask;
  1612.     val <<= 1;
  1613.     if(XFLG) val |= 1;
  1614.     XFLG = carry != 0;
  1615.     VFLG = CFLG = 0;
  1616.     ZFLG = ((uae_s16)(val)) == 0;
  1617.     NFLG = ((uae_s16)(val)) < 0;
  1618. XFLG = CFLG = carry!=0;
  1619.     put_word(dataa,val);
  1620. }}}}}
  1621. void REGPARAM2 CPU_OP_NAME(_e5f8)(uae_u32 opcode) /* ROXLW */
  1622. {
  1623. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1624.     uae_s16 data = get_word(dataa);
  1625. {    uae_u16 val = data;
  1626.     uae_u32 cmask = 0x8000;
  1627.     uae_u32 carry = val&cmask;
  1628.     val <<= 1;
  1629.     if(XFLG) val |= 1;
  1630.     XFLG = carry != 0;
  1631.     VFLG = CFLG = 0;
  1632.     ZFLG = ((uae_s16)(val)) == 0;
  1633.     NFLG = ((uae_s16)(val)) < 0;
  1634. XFLG = CFLG = carry!=0;
  1635.     put_word(dataa,val);
  1636. }}}}
  1637. void REGPARAM2 CPU_OP_NAME(_e5f9)(uae_u32 opcode) /* ROXLW */
  1638. {
  1639. {{    uaecptr dataa = nextilong();
  1640.     uae_s16 data = get_word(dataa);
  1641. {    uae_u16 val = data;
  1642.     uae_u32 cmask = 0x8000;
  1643.     uae_u32 carry = val&cmask;
  1644.     val <<= 1;
  1645.     if(XFLG) val |= 1;
  1646.     XFLG = carry != 0;
  1647.     VFLG = CFLG = 0;
  1648.     ZFLG = ((uae_s16)(val)) == 0;
  1649.     NFLG = ((uae_s16)(val)) < 0;
  1650. XFLG = CFLG = carry!=0;
  1651.     put_word(dataa,val);
  1652. }}}}
  1653. void REGPARAM2 CPU_OP_NAME(_e6d0)(uae_u32 opcode) /* RORW */
  1654. {
  1655.     uae_u32 srcreg = (opcode & 7);
  1656. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1657.     uae_s16 data = get_word(dataa);
  1658. {    uae_u16 val = data;
  1659.     uae_u32 carry = val&1;
  1660.     uae_u32 cmask = 0x8000;
  1661.     val >>= 1;
  1662.     if(carry) val |= cmask;
  1663.     VFLG = CFLG = 0;
  1664.     ZFLG = ((uae_s16)(val)) == 0;
  1665.     NFLG = ((uae_s16)(val)) < 0;
  1666. CFLG = carry!=0;
  1667.     put_word(dataa,val);
  1668. }}}}
  1669. void REGPARAM2 CPU_OP_NAME(_e6d8)(uae_u32 opcode) /* RORW */
  1670. {
  1671.     uae_u32 srcreg = (opcode & 7);
  1672. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1673.     uae_s16 data = get_word(dataa);
  1674. {    m68k_areg(regs, srcreg) += 2;
  1675. {    uae_u16 val = data;
  1676.     uae_u32 carry = val&1;
  1677.     uae_u32 cmask = 0x8000;
  1678.     val >>= 1;
  1679.     if(carry) val |= cmask;
  1680.     VFLG = CFLG = 0;
  1681.     ZFLG = ((uae_s16)(val)) == 0;
  1682.     NFLG = ((uae_s16)(val)) < 0;
  1683. CFLG = carry!=0;
  1684.     put_word(dataa,val);
  1685. }}}}}
  1686. void REGPARAM2 CPU_OP_NAME(_e6e0)(uae_u32 opcode) /* RORW */
  1687. {
  1688.     uae_u32 srcreg = (opcode & 7);
  1689. {{    m68k_areg(regs, srcreg) -= 2;
  1690. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1691.     uae_s16 data = get_word(dataa);
  1692. {    uae_u16 val = data;
  1693.     uae_u32 carry = val&1;
  1694.     uae_u32 cmask = 0x8000;
  1695.     val >>= 1;
  1696.     if(carry) val |= cmask;
  1697.     VFLG = CFLG = 0;
  1698.     ZFLG = ((uae_s16)(val)) == 0;
  1699.     NFLG = ((uae_s16)(val)) < 0;
  1700. CFLG = carry!=0;
  1701.     put_word(dataa,val);
  1702. }}}}}
  1703. void REGPARAM2 CPU_OP_NAME(_e6e8)(uae_u32 opcode) /* RORW */
  1704. {
  1705.     uae_u32 srcreg = (opcode & 7);
  1706. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1707.     uae_s16 data = get_word(dataa);
  1708. {    uae_u16 val = data;
  1709.     uae_u32 carry = val&1;
  1710.     uae_u32 cmask = 0x8000;
  1711.     val >>= 1;
  1712.     if(carry) val |= cmask;
  1713.     VFLG = CFLG = 0;
  1714.     ZFLG = ((uae_s16)(val)) == 0;
  1715.     NFLG = ((uae_s16)(val)) < 0;
  1716. CFLG = carry!=0;
  1717.     put_word(dataa,val);
  1718. }}}}
  1719. void REGPARAM2 CPU_OP_NAME(_e6f0)(uae_u32 opcode) /* RORW */
  1720. {
  1721.     uae_u32 srcreg = (opcode & 7);
  1722. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1723. {    uae_s16 data = get_word(dataa);
  1724. {    uae_u16 val = data;
  1725.     uae_u32 carry = val&1;
  1726.     uae_u32 cmask = 0x8000;
  1727.     val >>= 1;
  1728.     if(carry) val |= cmask;
  1729.     VFLG = CFLG = 0;
  1730.     ZFLG = ((uae_s16)(val)) == 0;
  1731.     NFLG = ((uae_s16)(val)) < 0;
  1732. CFLG = carry!=0;
  1733.     put_word(dataa,val);
  1734. }}}}}
  1735. void REGPARAM2 CPU_OP_NAME(_e6f8)(uae_u32 opcode) /* RORW */
  1736. {
  1737. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1738.     uae_s16 data = get_word(dataa);
  1739. {    uae_u16 val = data;
  1740.     uae_u32 carry = val&1;
  1741.     uae_u32 cmask = 0x8000;
  1742.     val >>= 1;
  1743.     if(carry) val |= cmask;
  1744.     VFLG = CFLG = 0;
  1745.     ZFLG = ((uae_s16)(val)) == 0;
  1746.     NFLG = ((uae_s16)(val)) < 0;
  1747. CFLG = carry!=0;
  1748.     put_word(dataa,val);
  1749. }}}}
  1750. void REGPARAM2 CPU_OP_NAME(_e6f9)(uae_u32 opcode) /* RORW */
  1751. {
  1752. {{    uaecptr dataa = nextilong();
  1753.     uae_s16 data = get_word(dataa);
  1754. {    uae_u16 val = data;
  1755.     uae_u32 carry = val&1;
  1756.     uae_u32 cmask = 0x8000;
  1757.     val >>= 1;
  1758.     if(carry) val |= cmask;
  1759.     VFLG = CFLG = 0;
  1760.     ZFLG = ((uae_s16)(val)) == 0;
  1761.     NFLG = ((uae_s16)(val)) < 0;
  1762. CFLG = carry!=0;
  1763.     put_word(dataa,val);
  1764. }}}}
  1765. void REGPARAM2 CPU_OP_NAME(_e7d0)(uae_u32 opcode) /* ROLW */
  1766. {
  1767.     uae_u32 srcreg = (opcode & 7);
  1768. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1769.     uae_s16 data = get_word(dataa);
  1770. {    uae_u16 val = data;
  1771.     uae_u32 cmask = 0x8000;
  1772.     uae_u32 carry = val&cmask;
  1773.     val <<= 1;
  1774.     if(carry)  val |= 1;
  1775.     VFLG = CFLG = 0;
  1776.     ZFLG = ((uae_s16)(val)) == 0;
  1777.     NFLG = ((uae_s16)(val)) < 0;
  1778. CFLG = carry!=0;
  1779.     put_word(dataa,val);
  1780. }}}}
  1781. void REGPARAM2 CPU_OP_NAME(_e7d8)(uae_u32 opcode) /* ROLW */
  1782. {
  1783.     uae_u32 srcreg = (opcode & 7);
  1784. {{    uaecptr dataa = m68k_areg(regs, srcreg);
  1785.     uae_s16 data = get_word(dataa);
  1786. {    m68k_areg(regs, srcreg) += 2;
  1787. {    uae_u16 val = data;
  1788.     uae_u32 cmask = 0x8000;
  1789.     uae_u32 carry = val&cmask;
  1790.     val <<= 1;
  1791.     if(carry)  val |= 1;
  1792.     VFLG = CFLG = 0;
  1793.     ZFLG = ((uae_s16)(val)) == 0;
  1794.     NFLG = ((uae_s16)(val)) < 0;
  1795. CFLG = carry!=0;
  1796.     put_word(dataa,val);
  1797. }}}}}
  1798. void REGPARAM2 CPU_OP_NAME(_e7e0)(uae_u32 opcode) /* ROLW */
  1799. {
  1800.     uae_u32 srcreg = (opcode & 7);
  1801. {{    m68k_areg(regs, srcreg) -= 2;
  1802. {    uaecptr dataa = m68k_areg(regs, srcreg);
  1803.     uae_s16 data = get_word(dataa);
  1804. {    uae_u16 val = data;
  1805.     uae_u32 cmask = 0x8000;
  1806.     uae_u32 carry = val&cmask;
  1807.     val <<= 1;
  1808.     if(carry)  val |= 1;
  1809.     VFLG = CFLG = 0;
  1810.     ZFLG = ((uae_s16)(val)) == 0;
  1811.     NFLG = ((uae_s16)(val)) < 0;
  1812. CFLG = carry!=0;
  1813.     put_word(dataa,val);
  1814. }}}}}
  1815. void REGPARAM2 CPU_OP_NAME(_e7e8)(uae_u32 opcode) /* ROLW */
  1816. {
  1817.     uae_u32 srcreg = (opcode & 7);
  1818. {{    uaecptr dataa = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)nextiword();
  1819.     uae_s16 data = get_word(dataa);
  1820. {    uae_u16 val = data;
  1821.     uae_u32 cmask = 0x8000;
  1822.     uae_u32 carry = val&cmask;
  1823.     val <<= 1;
  1824.     if(carry)  val |= 1;
  1825.     VFLG = CFLG = 0;
  1826.     ZFLG = ((uae_s16)(val)) == 0;
  1827.     NFLG = ((uae_s16)(val)) < 0;
  1828. CFLG = carry!=0;
  1829.     put_word(dataa,val);
  1830. }}}}
  1831. void REGPARAM2 CPU_OP_NAME(_e7f0)(uae_u32 opcode) /* ROLW */
  1832. {
  1833.     uae_u32 srcreg = (opcode & 7);
  1834. {{    uaecptr dataa = get_disp_ea(m68k_areg(regs, srcreg));
  1835. {    uae_s16 data = get_word(dataa);
  1836. {    uae_u16 val = data;
  1837.     uae_u32 cmask = 0x8000;
  1838.     uae_u32 carry = val&cmask;
  1839.     val <<= 1;
  1840.     if(carry)  val |= 1;
  1841.     VFLG = CFLG = 0;
  1842.     ZFLG = ((uae_s16)(val)) == 0;
  1843.     NFLG = ((uae_s16)(val)) < 0;
  1844. CFLG = carry!=0;
  1845.     put_word(dataa,val);
  1846. }}}}}
  1847. void REGPARAM2 CPU_OP_NAME(_e7f8)(uae_u32 opcode) /* ROLW */
  1848. {
  1849. {{    uaecptr dataa = (uae_s32)(uae_s16)nextiword();
  1850.     uae_s16 data = get_word(dataa);
  1851. {    uae_u16 val = data;
  1852.     uae_u32 cmask = 0x8000;
  1853.     uae_u32 carry = val&cmask;
  1854.     val <<= 1;
  1855.     if(carry)  val |= 1;
  1856.     VFLG = CFLG = 0;
  1857.     ZFLG = ((uae_s16)(val)) == 0;
  1858.     NFLG = ((uae_s16)(val)) < 0;
  1859. CFLG = carry!=0;
  1860.     put_word(dataa,val);
  1861. }}}}
  1862. void REGPARAM2 CPU_OP_NAME(_e7f9)(uae_u32 opcode) /* ROLW */
  1863. {
  1864. {{    uaecptr dataa = nextilong();
  1865.     uae_s16 data = get_word(dataa);
  1866. {    uae_u16 val = data;
  1867.     uae_u32 cmask = 0x8000;
  1868.     uae_u32 carry = val&cmask;
  1869.     val <<= 1;
  1870.     if(carry)  val |= 1;
  1871.     VFLG = CFLG = 0;
  1872.     ZFLG = ((uae_s16)(val)) == 0;
  1873.     NFLG = ((uae_s16)(val)) < 0;
  1874. CFLG = carry!=0;
  1875.     put_word(dataa,val);
  1876. }}}}
  1877. #endif
  1878.